﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Linq;
using System.Data.SqlClient;
using System.Text;
using IntraVision.Web;
using IntraVision.Web.Toolkit;
using IntraVision.Web.Security;
using Model;

[AllowedRole("Finance","DayReport")]
public class DayReportController : ReportController<NotarialServiceDataContext>
{
    DateTime _StartDate;
    DateTime _EndDate;

    public DayReportController() : base()
    {
        _StartDate = _EndDate = DateTime.Now;
        _ColumnsCaptions = new string[14] { "Номер", "Время", "Клиент", "Реестр", "Номер бланка", "Н Г.п.+ПИТР", "Н Коп.+ПИТР", "Н Ксер.", "Н Всего", "БН Г.п.+ПИТР", "БН Коп.+ПИТР", "БН Ксер.", "БН Всего", "Итого Н+БН" };
    }

    public override void Default()
    {
        InitDatesFromRequest();
        base.Default();
    }

    private void InitDatesFromRequest()
    {
        DateTime bufDateTime;
        if (!String.IsNullOrEmpty(Request["date"]) && DateTime.TryParse(Request["date"], out bufDateTime))
            _StartDate = _EndDate = bufDateTime;
    }

    protected override void InitParams(NotarialServiceDataContext dc)
    {
        //подкорректируем диапазон дат, чтобы учесть крайние границы времени
        _StartDate = _StartDate.AddHours(-_StartDate.Hour);
        _StartDate = _StartDate.AddMinutes(-_StartDate.Minute);
        _EndDate = _EndDate.AddHours(-_EndDate.Hour + 23);
        _EndDate = _EndDate.AddMinutes(-_EndDate.Minute + 59);

        //добавим параметры
        _CommandParams.Clear();
        _CommandParams.Add("@StartDate", _StartDate);
        _CommandParams.Add("@EndDate", _EndDate);
    }

    protected override void DataReceived(System.Data.DataSet ds)
    {
        base.DataReceived(ds);

        ViewData["date"] = _StartDate;
    }

    protected override void PrepareDataTable(ref DataTable dt)
    {
        base.PrepareDataTable(ref dt);

        FormatOrderIdRow(ref dt);

        return;
    }

    private void FormatOrderIdRow(ref DataTable dt)
    {
        var tmpColumn = dt.Columns.Add("temp", typeof(string));

        foreach (DataRow dr in dt.Rows)
            dr["temp"] = String.Format("<a href=\"#\" onclick=\"openDialog('order.ivp/view/{0}?popup=true'); return false;\">{0}</a>", dr["OrderId"]);

        dt.Columns.Remove("OrderId");
        tmpColumn.Caption = "Номер";
        tmpColumn.ColumnName = "OrderId";
        tmpColumn.SetOrdinal(0);
    }
}
